﻿!include nsDialogs.nsh
!include LogicLib.nsh
!include ReplaceInFile3.nsh
!include "MUI.nsh"

# This installs two files, app.exe and logo.ico, creates a start menu shortcut, builds an uninstaller, and
# adds uninstall information to the registry for Add/Remove Programs
 
# To get started, put this script into a folder with the two files (app.exe, logo.ico, and license.txt -
# You'll have to create these yourself) and run makensis on it
 
# If you change the names "app.exe", "logo.ico", or "license.txt" you should do a search and replace - they
# show up in a few places.
# All the other settings can be tweaked by editing the !defines at the top of this script
!define APPNAME "Qone软件管理平台-预览版"
!define COMPANYNAME "中科方德软件"
!define DESCRIPTION "软件过程管理工具"

!define MUI_ICON "logo.ico"
!define MUI_UNICON "logo.ico"

# These three must be integers
!define VERSIONMAJOR 8
!define VERSIONMINOR 0
!define VERSIONBUILD 0
# These will be displayed by the "Click here for support information" link in "Add/Remove Programs"
# It is possible to use "mailto:" links in here to open the email client
!define HELPURL "http://..." # "Support Information" link
!define UPDATEURL "http://..." # "Product Updates" link
!define ABOUTURL "http://..." # "Publisher" link
# This is the size (in kB) of all the files copied into "Program Files"
!define INSTALLSIZE 500000

Var /GLOBAL DBipport
Var /GLOBAL DBschema
Var /GLOBAL DBusername
Var /GLOBAL DBpasswd
Var /GLOBAL MACHipport

BrandingText " " 
RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)
 
InstallDir "$PROGRAMFILES\Qone8"
 
# rtf or txt file - remember if it is txt, it must be in the DOS text format (\r\n)
LicenseData "license.txt"
# This will be in the installer/uninstaller's title bar
Name "${COMPANYNAME} - ${APPNAME}"
Icon "logo.ico"
outFile "qone8-installer.exe"
 
!include LogicLib.nsh
 
# Just three pages - license agreement, install location, and installation
page license
page directory
Page instfiles
Page Custom InputPageCreate InputPageLeave
Page Custom InputPageCreate2 InputPageLeave2
!insertmacro MUI_LANGUAGE "SimpChinese"
!macro VerifyUserIsAdmin
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
        messageBox mb_iconstop "Administrator rights required!"
        setErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
        quit
${EndIf}
!macroend
 
function .onInit
	setShellVarContext all
	!insertmacro VerifyUserIsAdmin
functionEnd

Function InputPageCreate
    nsDialogs::Create 1018
    Pop $0

    ${NSD_CreateText} 0 0 100% 12u "请输入："
    Pop $0

    ${NSD_CreateText} 0 12u 100% 12u "数据库IP:端口："
    Pop $0

    ${NSD_CreateText} 0 24u 100% 12u ""
    Pop $DBipport

    ${NSD_CreateText} 0 36u 100% 12u "Schema："
    Pop $0

    ${NSD_CreateText} 0 48u 100% 12u ""
    Pop $DBschema

    ${NSD_CreateText} 0 60u 100% 12u "用户名："
    Pop $0

    ${NSD_CreateText} 0 72u 100% 12u ""
    Pop $DBusername

    ${NSD_CreateText} 0 84u 100% 12u "密码："
    Pop $0

    ${NSD_CreateText} 0 96u 100% 12u ""
    Pop $DBpasswd

    ${NSD_CreateText} 0 108u 100% 12u "请输入部署主机IP:端口："
    Pop $0

    ${NSD_CreateText} 0 120u 100% 12u ""
    Pop $MACHIPPort

    nsDialogs::Show
FunctionEnd

Function InputPageLeave


	${NSD_GetText} $DBipport $0
	Push %{DB_IPPORT}
	Push $0
	Push all
	Push all
	Push "$INSTDIR\Qone8Web\webapps\qone\WEB-INF\classes\application.properties"
	 Call AdvReplaceInFile


	${NSD_GetText} $DBschema $0
	Push %{DB_SCHEMA}
	Push $0
	Push all
	Push all
	Push "$INSTDIR\Qone8Web\webapps\qone\WEB-INF\classes\application.properties"
	 Call AdvReplaceInFile



	${NSD_GetText} $DBusername $0
	Push %{DB_USERNAME}
	Push $0
	Push all
	Push all
	Push "$INSTDIR\Qone8Web\webapps\qone\WEB-INF\classes\application.properties"
	 Call AdvReplaceInFile



	${NSD_GetText} $DBpasswd $0
	Push %{DB_PASSWD}
	Push $0
	Push all
	Push all
	Push "$INSTDIR\Qone8Web\webapps\qone\WEB-INF\classes\application.properties"
	 Call AdvReplaceInFile



	${NSD_GetText} $MACHipport $0
	Push 127.0.0.1:8080
	Push $0
	Push all
	Push all
	Push "$INSTDIR\Qone8Web\webapps\qoneVue\config.json"
	 Call AdvReplaceInFile

FunctionEnd 

Function InputPageCreate2
    nsDialogs::Create 1018
    Pop $0    

    ${NSD_CreateText} 0 0 100% 12u "安装完成！"
    Pop $0

    nsDialogs::Show
FunctionEnd

Function InputPageLeave2



FunctionEnd 

section "install"
	# Files for the install directory - to build the installer, these should be in the same directory as the install script (this file)
	setOutPath $INSTDIR
	# Files added here should be removed by the uninstaller (see section "uninstall")
	file /r "Qone8Web"
	file "run.bat"
	file "logo.ico"
	# Add any other files for the install directory (license files, app data, etc) here
 
	# Uninstaller - See function un.onInit and section "uninstall" for configuration
	writeUninstaller "$INSTDIR\uninstall.exe"
 
	# Start Menu
	createDirectory "$SMPROGRAMS"
	createShortCut "$SMPROGRAMS\${APPNAME}.lnk" "$INSTDIR\run.bat" "" "$INSTDIR\logo.ico"	
	createShortCut "$SMPROGRAMS\卸载${APPNAME}.lnk" "$INSTDIR\uninstall.exe" "" "${NSISDIR}\Contrib\Graphics\Icons\win-uninstall.ico"
 
	# Registry information for add/remove programs
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayName" "${COMPANYNAME} - ${APPNAME} - ${DESCRIPTION}"
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "InstallLocation" "$\"$INSTDIR$\""
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayIcon" "$\"$INSTDIR\logo.ico$\""
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "Publisher" "$\"${COMPANYNAME}$\""
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "HelpLink" "$\"${HELPURL}$\""
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLUpdateInfo" "$\"${UPDATEURL}$\""
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLInfoAbout" "$\"${ABOUTURL}$\""
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayVersion" "$\"${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}$\""
	WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMajor" ${VERSIONMAJOR}
	WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMinor" ${VERSIONMINOR}
	# There is no option for modifying or repairing the install
	WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoModify" 1
	WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoRepair" 1
	# Set the INSTALLSIZE constant (!defined at the top of this script) so Add/Remove Programs can accurately report the size
	WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "EstimatedSize" ${INSTALLSIZE}

	Push __install_path
	Push $INSTDIR
	Push all
	Push all
	Push "$INSTDIR\run.bat"
	 Call AdvReplaceInFile
sectionEnd
 
# Uninstaller
 
function un.onInit
	SetShellVarContext all
 
	#Verify the uninstaller - last chance to back out
	MessageBox MB_OKCANCEL "正在卸载 ${APPNAME}?" IDOK next
		Abort
	next:
	!insertmacro VerifyUserIsAdmin
functionEnd
 
section "uninstall"
 
	# Remove Start Menu launcher
	delete "$SMPROGRAMS\${APPNAME}.lnk"
	delete "$SMPROGRAMS\卸载${APPNAME}.lnk"

	# Try to remove the Start Menu folder - this will only happen if it is empty
	rmDir "$SMPROGRAMS"
 
	# Remove files
	rmDir /r $INSTDIR\Qone8Web
	delete $INSTDIR\run.bat
	delete $INSTDIR\logo.ico
 
	# Always delete uninstaller as the last action
	delete $INSTDIR\uninstall.exe
 
	# Try to remove the install directory - this will only happen if it is empty
	rmDir $INSTDIR
 
	# Remove uninstaller information from the registry
	DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}"
sectionEnd
